// 生产者消费者模型是一种常见的并发设计模式，用于解决在多线程环境中生产和消费数据之间的协调问题。该模型的核心思想是将数据的生产和消费分开，以便实现高效的资源利用和流畅的数据处理。以下是该模型的主要概念和特点：

// 1. 角色定义
// 生产者（Producer）：负责生成数据、任务或资源的线程。例如，生产者可能是一个读取传感器数据的线程，或者一个写入数据到缓冲区的线程。
// 消费者（Consumer）：负责处理或消耗生产者生成的数据的线程。例如，消费者可以是一个从缓冲区中读取数据并进行处理的线程。
// 2. 缓冲区
// 在生产者和消费者之间通常会有一个共享的缓冲区（也称为队列）。这个缓冲区用于存储生产者产生的数据，直到消费者能够处理它们。缓冲区的大小可以是固定的，也可以是动态的。
// 3. 同步机制
// 由于生产者和消费者可能会同时访问共享缓冲区，因此需要使用同步机制（如互斥锁、条件变量等）来避免数据竞争和不一致。
// 互斥锁（Mutex）：确保在同一时刻只有一个线程可以访问缓冲区。
// 条件变量（Condition Variable）：用于通知消费者数据已被生产，或通知生产者缓冲区已满。
// 4. 工作流程
// 生产者在缓冲区中添加新数据，并在缓冲区未满的情况下继续生产。
// 消费者从缓冲区中取出数据，并在缓冲区非空的情况下继续消费。
// 当缓冲区满时，生产者可能会阻塞，等待消费者消费数据；当缓冲区为空时，消费者则会阻塞，等待生产者生成新数据。
// 5. 应用场景
// 生产者消费者模型广泛应用于各种并发编程场景，如：
// 数据处理流水线
// 任务调度系统
// 网络服务器中的请求处理